package com.superm.service;

import com.superm.entity.Goods;
import com.superm.entity.GoodsPoJo;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.Map;

public interface GoodsService {
    /**
     * 根据id 查询一条商品信息
     * @param goods
     * @return
     */
    Goods allGoods(@Param("goods") Goods goods);
    /**
     * 模糊查询商品信息
     * @return
     */
    List<Goods> selectLikeGoods(GoodsPoJo goodsPoJo, Integer pageNo, Integer pageSize);



    /**
     * 查询商品条数
     * @param goodsPoJo
     * @return
     */
    Integer selectGoodsCount(GoodsPoJo goodsPoJo);


    /**
     * 添加商品信息
     * @param file
     * @param goodsPoJo
     * @return
     */
    Map<String,Object> addGoods(MultipartFile file, GoodsPoJo goodsPoJo, HttpServletRequest request) throws IOException;



    /**
     * 增加商品库存用的方法 条件是下架的商品
     * @return
     */
    List<Goods> allGoodSs();



    /**
     * 商品下架
     * @return
     */
    Map<String,Object> goodsOffTheShelf(Integer goodsId);

    /**
     * 查询指定货架下的商品信息
     * @param storgageRack
     * @return
     */
    Map<String,Object> selectStorgageRackId(Integer storgageRack);

    /**
     * 修改商品信息
     * @param file
     * @param goodsPoJo
     * @return
     */
    Map<String,Object> updateGoods(MultipartFile file, GoodsPoJo goodsPoJo, HttpServletRequest request) throws IOException;


    /**
     * 根据商品编号查询指定商品信息
     * @param goodsId
     * @return
     */
    Goods selectIdGoods(Integer goodsId);


    /**
     * 异步查询指定编号商品
     * @param goodsId
     * @return
     */
    Map<String,Object> ajaxSelectIdGoods(Integer goodsId);


    /**
     * 查询所有商品
     * @return
     */
   List<Goods> selectGoodSs();
}
